/* 
    8.4.1 类定义 声明和表达式
*/
console.log(person) /*报错 */
class person {

}
console.log(person)/*不报错 */
// 表达式
console.log(person1)/*报错 */
const person1 = class{}
console.log(person1)/*不报错 */

//声名式的方法可以引用提升
console.log(fun)/*不报错 */
function fun(){}
console.log(fun)/*不报错 */

// 表达式的方法无法引用提升
console.log(fun1)/*报错 */
const fun1 = function(){}
console.log(fun1)/*不报错 */

/* 
   函数受函数作用域限制，而类受块作用域限制
   函数声明 (Function Declaration)​
   函数提升​​：函数声明会被提升到所在作用域的顶部
   无视块级作用域​​：即使在 {}块中声明，函数依然属于外层作用域

    类声明 (Class Declaration)​
    不提升​​：类声明不会被提升
    遵守块级作用域​​：在 {}中声明的类，外部无法访问
*/
{
    function funD (){}
    class classD{}
}
console.log(funD)
console.log(classD)